package locadora.dados;

import java.io.IOException;
import java.util.ArrayList;

public interface Repositorio {
	
	/**
	 * Busca um objeto atraves da chave única passada por parâmetro
	 * @param chave chave única
	 * @return referência para o objeto encontrado ou null caso contrário
	 * @throws Exception 
	 */
	public Object busca(String chave) throws Exception;
	
	/**
	 * Armazena todos os objetos existentes em memória no disco
	 * @throws IOException
	 */
	public void armazena() throws IOException;
	
	/**
	 * Adiciona um novo objeto
	 * @param objeto objeto a ser adicionado
	 * @throws Exception
	 */
	public void adiciona(Object objeto) throws Exception;
	
	/**
	 * Remove um objeto
	 * @param chave identificador único do objeto
	 * @throws IOException 
	 */
	public void remove(String chave) throws IOException;
	
	/**
	 * Retorna uma lista dos objetos contidos na camada de dados
	 * @return lista de objetos
	 */
	public ArrayList<Object> ListarObjetos();
	
}
